package com.cn.mmd.service;

import com.cn.mmd.model.*;

import java.util.List;

/**
 * 标签接口类
 * Created by Administrator on 2016/8/1.
 */
public interface LabelService {

    /**
     * 添加标签
     * @param label
     * @return
     */
    int insertLabel(Label label);

    /**
     * 通过标签库名查出下面的所有一级指标名
     * @param packageName
     * @return
     */
    List<LabelIndex> selectByPackageName(String packageName);


    /**
     * 通过标签库名和一级指标名查出下面的所有二级指标
     * @param labelTwoIndex
     * @return
     */
    List<LabelTwoIndex> selectBylabelName(LabelTwoIndex labelTwoIndex);


    /**
     * 通过条件查出下面的所有三级指标
     * @param labelThreeIndex
     * @return
     */
    List<LabelThreeIndex> selectByTwoLabelName(LabelThreeIndex labelThreeIndex);


    /**
     * 通过条件查出下面的所有标签
     * @param label
     * @return
     */
    List<Label> selectByThreeLabelName(Label label);

    /**
     * 通过一级指标查出下面所有标签
     * @param indexName
     * @return
     */
    List<Label> selectByIndexName(String indexName);


    /**
     * 修改标签
     * @param label
     * @return
     */
    int updateLabel(Label label);


    /**
     * 删除标签
     * @param labelId
     * @return
     */
    int deleteLabel(int labelId);

    /**
     * 通过标签名查出指定标签
     * @param label
     * @return
     */
    Label selectLabel(Label label);


    /**
     * 通过标签库名查出标签库信息
     * @param packageName
     * @return
     */
    LabelPackage selectLabelPackage(String packageName);


    /**
     * 查出所有标签库
     * @param labelPackage
     * @return
     */
    List<LabelPackage> selectAllPackage(LabelPackage labelPackage);

    /**
     * 查出标签库数量
     * @return
     */
    int selectPackageCount();

    /**
     * 添加标签库
     * @param labelPackage
     * @return
     */
     int insertLabelPackage(LabelPackage labelPackage);

    /**
     * 添加一级指标
     * @param labelIndex
     * @return
     */
    int insertOneIndex(LabelIndex labelIndex);

    /**
     *通过一级指标名修改其权重
     * @param labelIndex
     * @return
     */
    int updateByIndexName(LabelIndex labelIndex);


    /**
     *通过二级指标名修改其权重
     * @param labelTwoIndex
     * @return
     */
    int updateByTwoIndexName(LabelTwoIndex labelTwoIndex);

    /**
     * 通过三级指标名修改其权重
     * @param labelThreeIndex
     * @return
     */
    int updateByThreeIndexName(LabelThreeIndex labelThreeIndex);


    /**
     * 查出index的主键
     * @param labelIndex
     * @return
     */
    LabelIndex selectIndexId(LabelIndex labelIndex);

    /**
     * 通过主键修改一级指标
     * @param labelIndex
     * @return
     */
    int updateByindexId(LabelIndex labelIndex);

    /**
     * 通过主键修改二级指标
     * @param labelTwoIndex
     * @return
     */
    int updateByTwoIndexId(LabelTwoIndex labelTwoIndex);


    /**
     * 通过主键修改三级指标
     * @param labelThreeIndex
     * @return
     */
    int updateByThreeIndexId(LabelThreeIndex labelThreeIndex);

    /**
     * 添加二级指标
     * @param labelTwoIndex
     * @return
     */
    int insertTwoIndex(LabelTwoIndex labelTwoIndex);

    /**
     * 添加三级指标
     * @param labelThreeIndex
     * @return
     */
    int insertThreeIndex(LabelThreeIndex labelThreeIndex);
}
